package cn.haoxsf.app.system.service;

import cn.haoxsf.app.system.entity.Member;
import cn.haoxsf.app.system.entity.Permission;
import cn.haoxsf.app.system.model.vo.MemberResult;
import cn.haoxsf.app.system.model.vo.MemberVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 后台用户表 服务类
 * </p>
 *
 * @author Ele  qvbanfm@qq.com
 * @since 2020-01-07
 */
public interface IMemberService extends IService<Member> {
    /**
     * 获取用户
     * @param userName 用户名
     * @return 用户
     */
    Member getMemberByUsername(String userName);

    /**
     * 获取用户所有权限(包括+-权限)
     */
    List<Permission> getPermissionList(Long adminId);

    /**
     * 添加用户
     * @param member
     * @return
     */
    Boolean add(Member member);

    /**
     * 更新用户
     * @param member
     * @return
     */
    int updateMember(Member member);
    /**
     *  获取用户+角色
     * @param userName
     * @return
     */
    MemberResult getMemberAndRole(String userName);

    /**
     * 查询用户 如果有师傅的信息就显示
     * @param userName 用户名
     * @return 结果
     */
    MemberVo getMemberAndBusinessByUsername(String userName);
    /**
     * 查找附近的商户
     *
     * @param radii    半径距离(单位km)
     * @param lon      当前位置
     * @param lat      当前位置
     * @param userType 需要查询的用户类型
     * @return 附近的用户集合
     */
    List<Map<String, Object>> getNearbyUsers(Double radii, Double lon, Double lat, String userType);

    /**
     * 按照openid查询
     * @param openId 用户openid
     * @return 结果
     */
    Member getMemberByOpenId(String openId);

    /**
     * 查询全部按照openid
     * @return
     */
    List<Member> getMemberListByOpenId();
}
